home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-13
/
xvisrc.zip
/
PARAM.H
< prev
next >
Wrap
C/C++ Source or Header
|
1992-07-28
|
4KB
|
173 lines
/* Copyright (c) 1990,1991,1992 Chris and John Downey */
/***
* @(#)param.h 2.1 (Chris & John Downey) 7/29/92
* program name:
xvi
* function:
PD version of UNIX "vi" editor, with extensions.
* module name:
param.h
* module function:
Definitions for parameter access.
This is all going to change when we have local parameters.
* history:
STEVIE - ST Editor for VI Enthusiasts, Version 3.10
Originally by Tim Thompson (twitch!tjt)
Extensive modifications by Tony Andrews (onecom!wldrdg!tony)
Heavily modified by Chris & John Downey
***/
/*
* Settable parameters.
*/
typedef union {
int pv_i;
bool_t pv_b;
char *pv_s;
char **pv_l;
} Paramval;
typedef struct param {
char *p_fullname; /* full parameter name */
char *p_shortname; /* permissible abbreviation */
int p_flags; /* type of parameter, and whether implemented */
/*
* This field is used for numeric and boolean values,
* and for storing the numeric representation for enums.
*/
int p_value;
/*
* Special function to set parameter.
* This is called whenever the parameter is set by the user.
*/
bool_t (*p_func) P((Xviwin *, Paramval, bool_t));
/*
* This field is used for strings, lists and enums.
* Note that making this the last field allows us to initialise the
* parameter table, since we can just leave this field uninitialised.
*/
union {
char *pu_str;
char **pu_list;
} pu;
} Param;
#define p_num p_value
#define p_bool p_value
#define p_eval p_value
#define p_str pu.pu_str
#define p_list pu.pu_list
#define p_elist pu.pu_list
#ifdef __ZTC__
# define PFUNCADDR(f) ((bool_t (*)(Xviwin *, Paramval, bool_t))(f))
#else
# define PFUNCADDR(f) (f)
#endif
extern Param params[];
/*
* Flags
*/
#define P_BOOL 0x01 /* the parameter is boolean */
#define P_NUM 0x02 /* the parameter is numeric */
#define P_STRING 0x04 /* the parameter is a string */
#define P_ENUM 0x08 /* the parameter is an enumerated type */
#define P_LIST 0x20 /* the parameter is a list of strings */
#define P_TYPE 0x2f /* used to mask out type from other bits */
#define P_CHANGED 0x10 /* the parameter has been changed */
/*
* Macros to set/get the value of a parameter.
* One each for the four parameter types.
* May change implementation later to do more checking.
*/
#define Pn(n) (params[n].p_num)
#define Pb(n) (params[n].p_bool)
#define Ps(n) (params[n].p_str)
#define Pl(n) (params[n].p_list)
#define Pen(n) (params[n].p_value)
#define Pes(n) (params[n].p_elist[params[n].p_eval])
#define P_ischanged(n) (params[n].p_flags & P_CHANGED)
#define P_setchanged(n) (params[n].p_flags |= P_CHANGED)
/*
* The following are the indices in the params array for each parameter.
* They must not be changed without also changing the table in "param.c".
*/
#define P_ada 0
#define P_adapath 1
#define P_autoindent 2
#define P_autoprint 3
#define P_autosplit 4
#define P_autowrite 5
#define P_beautify 6
#define P_cchars 7
#define P_colour 8
#define P_directory 9
#define P_edcompatible 10
#define P_edit 11
#define P_errorbells 12
#define P_format 13
#define P_hardtabs 14
#define P_helpfile 15
#define P_ignorecase 16
#define P_jumpscroll 17
#define P_lisp 18
#define P_list 19
#define P_magic 20
#define P_mchars 21
#define P_mesg 22
#define P_minrows 23
#define P_modeline 24
#define P_number 25
#define P_open 26
#define P_optimize 27
#define P_paragraphs 28
#define P_preserve 29
#define P_preservetime 30
#define P_prompt 31
#define P_readonly 32
#define P_redraw 33
#define P_regextype 34
#define P_remap 35
#define P_report 36
#define P_roscolour 37
#define P_scroll 38
#define P_sections 39
#define P_sentences 40
#define P_shell 41
#define P_shiftwidth 42
#define P_showmatch 43
#define P_slowopen 44
#define P_sourceany 45
#define P_statuscolour 46
#define P_systemcolour 47
#define P_tabs 48
#define P_tabstop 49
#define P_taglength 50
#define P_tags 51
#define P_term 52
#define P_terse 53
#define P_timeout 54
#define P_ttytype 55
#define P_vbell 56
#define P_warn 57
#define P_window 58
#define P_wrapmargin 59
#define P_wrapscan 60
#define P_writeany 61